{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import argparse\n",
    "import os\n",
    "import cv2\n",
    "import h5py\n",
    "from sklearn import preprocessing\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.models import Model, load_model, model_from_json\n",
    "from PIL import Image\n",
    "import imagehash\n",
    "import csv\n",
    "from sklearn.metrics import classification_report"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "算混淆矩阵"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "BIT——ResNet生成的杀死率不均衡，查看原始图像和生成测试用例的混淆矩阵发现，有区别。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "origin_model = load_model('../../../../data/neural_networks/Car_DenseNet121.h5')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Cannot load file containing pickled data when allow_pickle=False",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-6-be66a35650f4>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mdeepsmartfuzz_path\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"../../../../output/grad/DenseNet121/Car/generated_samples_d\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[0mdeepsmartfuzz_new_inputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeepsmartfuzz_path\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'new_inputs.npy'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mdeepsmartfuzz_origin_inputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeepsmartfuzz_path\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'orgin_inputs.npy'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[0mdeepsmartfuzz_new_outputs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeepsmartfuzz_path\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'new_outputs.npy'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda3\\envs\\grad\\lib\\site-packages\\numpy\\lib\\npyio.py\u001b[0m in \u001b[0;36mload\u001b[1;34m(file, mmap_mode, allow_pickle, fix_imports, encoding)\u001b[0m\n\u001b[0;32m    455\u001b[0m             \u001b[1;31m# Try a pickle\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    456\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mallow_pickle\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 457\u001b[1;33m                 raise ValueError(\"Cannot load file containing pickled data \"\n\u001b[0m\u001b[0;32m    458\u001b[0m                                  \"when allow_pickle=False\")\n\u001b[0;32m    459\u001b[0m             \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: Cannot load file containing pickled data when allow_pickle=False"
     ]
    }
   ],
   "source": [
    "deepsmartfuzz_path = \"../../../../output/grad/DenseNet121/Car/generated_samples_d\"\n",
    "deepsmartfuzz_new_inputs = np.load(os.path.join(deepsmartfuzz_path, 'new_inputs.npy'))\n",
    "deepsmartfuzz_origin_inputs = np.load(os.path.join(deepsmartfuzz_path, 'orgin_inputs.npy'))\n",
    "deepsmartfuzz_new_outputs = np.load(os.path.join(deepsmartfuzz_path, 'new_outputs.npy'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "deepsmartfuzz_perdict = origin_model(deepsmartfuzz_new_inputs)\n",
    "deepsmartfuzz_perdict_arg = np.argmax(deepsmartfuzz_perdict, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "deepsmartfuzz_new_outputs_arg = np.argmax(deepsmartfuzz_new_outputs, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "report_dict = classification_report(deepsmartfuzz_new_outputs_arg,deepsmartfuzz_perdict_arg,output_dict=True)\n",
    "report = classification_report(deepsmartfuzz_new_outputs_arg,deepsmartfuzz_perdict_arg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.00      0.00      0.00        65\n",
      "           1       0.50      0.01      0.03       302\n",
      "           2       0.00      0.00      0.00        51\n",
      "           3       0.10      0.20      0.14        25\n",
      "           4       0.00      0.00      0.00        32\n",
      "           5       0.00      0.00      0.00        37\n",
      "           6       0.00      0.00      0.00         0\n",
      "           9       0.00      0.00      0.00         0\n",
      "          10       0.00      0.00      0.00         0\n",
      "          12       0.00      0.00      0.00         0\n",
      "          14       0.00      0.00      0.00         0\n",
      "          19       0.00      0.00      0.00         0\n",
      "          20       0.00      0.00      0.00         0\n",
      "          22       0.00      0.00      0.00         0\n",
      "          25       0.00      0.00      0.00         0\n",
      "          27       0.00      0.00      0.00         0\n",
      "          29       0.00      0.00      0.00         0\n",
      "          31       0.00      0.00      0.00         0\n",
      "          32       0.00      0.00      0.00         0\n",
      "          34       0.00      0.00      0.00         0\n",
      "          35       0.00      0.00      0.00         0\n",
      "          36       0.00      0.00      0.00         0\n",
      "          37       0.00      0.00      0.00         0\n",
      "          38       0.00      0.00      0.00         0\n",
      "          41       0.00      0.00      0.00         0\n",
      "          42       0.00      0.00      0.00         0\n",
      "          43       0.00      0.00      0.00         0\n",
      "          46       0.00      0.00      0.00         0\n",
      "\n",
      "    accuracy                           0.02       512\n",
      "   macro avg       0.02      0.01      0.01       512\n",
      "weighted avg       0.30      0.02      0.02       512\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(report)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "precision_new = []\n",
    "recall_new = []\n",
    "f1_new = []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'7'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-21-1bc66310fd54>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreport_dict\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;31m#     print(i)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m     \u001b[0mprecision_new\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreport_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'precision'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m     \u001b[0mrecall_new\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreport_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'recall'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m     \u001b[0mf1_new\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mreport_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'f1-score'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: '7'"
     ]
    }
   ],
   "source": [
    "for i in np.arange(len(report_dict)-3):\n",
    "#     print(i)\n",
    "    precision_new.append(report_dict[str(i)]['precision'])\n",
    "    recall_new.append(report_dict[str(i)]['recall'])\n",
    "    f1_new.append(report_dict[str(i)]['f1-score'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "画杀死率图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_per_class = [9,10,10,10,10,10,10,9,10,9,10,10,10,10,10,10,8,10,10,10,10,10,10,10,10,10,10,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]\n",
    "kill_per_class_2 = [13,39,6,10,30,31]\n",
    "kill_origin = [9,5,8,9,5,8,8,8,8,8,8,8,8,5,9,]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "correlation, p = scipy.stats.spearmanr(precision_new, kill_per_class)\n",
    "correlation, p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "kill_per_class = np.array(kill_per_class)\n",
    "kill_per_class_2 = np.array(kill_per_class_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,\n",
       "       35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kill_per_index = np.arange(1, 50)\n",
    "kill_per_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['SUV', '轿车', '微型客车', '小型货车', '公共汽车', '卡车']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 公共汽车、微型客车、小型货车、轿车、SUV和卡车。每种车型的车辆数量分别为558辆、883辆、476辆、5922辆、1392辆和822辆。\n",
    "class_name = ['SUV', 'Sedan', 'Microbus', 'Minivan', 'Bus', 'Truck']\n",
    "[1392, 5922, 883, 476, 558, 822]\n",
    "['SUV','轿车','微型客车','小型货车','公共汽车','卡车']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "No handles with labels found to put in legend.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(kill_per_index, kill_per_class)\n",
    "plt.legend()\n",
    "# plt.xticks(kill_per_index,kill_per_index)\n",
    "plt.xlim(1, 50) # x轴范围\n",
    "plt.ylim(0, 10) # y轴范围\n",
    "# plt.title('simple-0.47')\n",
    "plt.xlabel('kill_per_index')\n",
    "plt.ylabel('kill_per_class')\n",
    "# plt.xticks(range(1,7,1), class_name)\n",
    "plt.grid(linestyle='--') # figure中的网格线\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "x and y must have same first dimension, but have shapes (49,) and (6,)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-10-1597ee3e9b91>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkill_per_index\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkill_per_class_2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlegend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;31m# plt.xticks(kill_per_index,kill_per_index)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxlim\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# x轴范围\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mylim\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m50\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# y轴范围\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda3\\envs\\grad\\lib\\site-packages\\matplotlib\\pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m   2840\u001b[0m     return gca().plot(\n\u001b[0;32m   2841\u001b[0m         \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscalex\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscalex\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscaley\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscaley\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2842\u001b[1;33m         **({\"data\": data} if data is not None else {}), **kwargs)\n\u001b[0m\u001b[0;32m   2843\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   2844\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda3\\envs\\grad\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(self, scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m   1741\u001b[0m         \"\"\"\n\u001b[0;32m   1742\u001b[0m         \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1743\u001b[1;33m         \u001b[0mlines\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1744\u001b[0m         \u001b[1;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1745\u001b[0m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda3\\envs\\grad\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m    271\u001b[0m                 \u001b[0mthis\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    272\u001b[0m                 \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 273\u001b[1;33m             \u001b[1;32myield\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    274\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    275\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0mget_next_color\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mD:\\Anaconda3\\envs\\grad\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[1;34m(self, tup, kwargs)\u001b[0m\n\u001b[0;32m    397\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    398\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 399\u001b[1;33m             raise ValueError(f\"x and y must have same first dimension, but \"\n\u001b[0m\u001b[0;32m    400\u001b[0m                              f\"have shapes {x.shape} and {y.shape}\")\n\u001b[0;32m    401\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (49,) and (6,)"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAANT0lEQVR4nO3cYYjkd33H8ffHO1NpjKb0VpC706T00njYQtIlTRFqirZc8uDugUXuIFgleGAbKVWEFEuU+MiGWhCu1ZOKVdAYfSALntwDjQTEC7chNXgXItvTeheFrDHNk6Ax7bcPZtKdrneZf3Zndy/7fb/gYP7/+e3Mlx97752d2ZlUFZKk7e8VWz2AJGlzGHxJasLgS1ITBl+SmjD4ktSEwZekJqYGP8lnkzyZ5PuXuD5JPplkKcmjSW6c/ZiSpPUa8gj/c8CBF7n+VmDf+N9R4F/WP5YkadamBr+qHgR+/iJLDgGfr5FTwNVJXj+rASVJs7FzBrexGzg/cXxhfO6nqxcmOcrotwCuvPLKP7z++utncPeS1MfDDz/8s6qaW8vXziL4g1XVceA4wPz8fC0uLm7m3UvSy16S/1zr187ir3SeAPZOHO8Zn5MkXUZmEfwF4F3jv9a5GXimqn7t6RxJ0taa+pROki8BtwC7klwAPgK8EqCqPgWcAG4DloBngfds1LCSpLWbGvyqOjLl+gL+emYTSZI2hO+0laQmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqYlBwU9yIMnjSZaS3HWR69+Q5IEkjyR5NMltsx9VkrQeU4OfZAdwDLgV2A8cSbJ/1bK/B+6vqhuAw8A/z3pQSdL6DHmEfxOwVFXnquo54D7g0Ko1BbxmfPm1wE9mN6IkaRaGBH83cH7i+ML43KSPArcnuQCcAN5/sRtKcjTJYpLF5eXlNYwrSVqrWb1oewT4XFXtAW4DvpDk1267qo5X1XxVzc/Nzc3oriVJQwwJ/hPA3onjPeNzk+4A7geoqu8CrwJ2zWJASdJsDAn+aWBfkmuTXMHoRdmFVWt+DLwNIMmbGAXf52wk6TIyNfhV9TxwJ3ASeIzRX+OcSXJPkoPjZR8E3pvke8CXgHdXVW3U0JKkl27nkEVVdYLRi7GT5+6euHwWeMtsR5MkzZLvtJWkJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNTEo+EkOJHk8yVKSuy6x5p1JziY5k+SLsx1TkrReO6ctSLIDOAb8GXABOJ1koarOTqzZB/wd8JaqejrJ6zZqYEnS2gx5hH8TsFRV56rqOeA+4NCqNe8FjlXV0wBV9eRsx5QkrdeQ4O8Gzk8cXxifm3QdcF2S7yQ5leTAxW4oydEki0kWl5eX1zaxJGlNZvWi7U5gH3ALcAT4TJKrVy+qquNVNV9V83NzczO6a0nSEEOC/wSwd+J4z/jcpAvAQlX9qqp+CPyA0Q8ASdJlYkjwTwP7klyb5ArgMLCwas3XGD26J8kuRk/xnJvdmJKk9Zoa/Kp6HrgTOAk8BtxfVWeS3JPk4HjZSeCpJGeBB4APVdVTGzW0JOmlS1VtyR3Pz8/X4uLilty3JL1cJXm4qubX8rW+01aSmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmBgU/yYEkjydZSnLXi6x7R5JKMj+7ESVJszA1+El2AMeAW4H9wJEk+y+y7irgb4CHZj2kJGn9hjzCvwlYqqpzVfUccB9w6CLrPgZ8HPjFDOeTJM3IkODvBs5PHF8Yn/s/SW4E9lbV11/shpIcTbKYZHF5efklDytJWrt1v2ib5BXAJ4APTltbVcerar6q5ufm5tZ715Kkl2BI8J8A9k4c7xmfe8FVwJuBbyf5EXAzsOALt5J0eRkS/NPAviTXJrkCOAwsvHBlVT1TVbuq6pqqugY4BRysqsUNmViStCZTg19VzwN3AieBx4D7q+pMknuSHNzoASVJs7FzyKKqOgGcWHXu7kusvWX9Y0mSZs132kpSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmhgU/CQHkjyeZCnJXRe5/gNJziZ5NMk3k7xx9qNKktZjavCT7ACOAbcC+4EjSfavWvYIMF9VfwB8FfiHWQ8qSVqfIY/wbwKWqupcVT0H3AccmlxQVQ9U1bPjw1PAntmOKUlaryHB3w2cnzi+MD53KXcA37jYFUmOJllMsri8vDx8SknSus30RdsktwPzwL0Xu76qjlfVfFXNz83NzfKuJUlT7Byw5glg78TxnvG5/yfJ24EPA2+tql/OZjxJ0qwMeYR/GtiX5NokVwCHgYXJBUluAD4NHKyqJ2c/piRpvaYGv6qeB+4ETgKPAfdX1Zkk9yQ5OF52L/Bq4CtJ/j3JwiVuTpK0RYY8pUNVnQBOrDp398Tlt894LknSjPlOW0lqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpow+JLUhMGXpCYMviQ1YfAlqQmDL0lNGHxJasLgS1ITBl+SmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElqwuBLUhMGX5KaMPiS1ITBl6QmDL4kNWHwJakJgy9JTRh8SWrC4EtSEwZfkpoYFPwkB5I8nmQpyV0Xuf43knx5fP1DSa6Z+aSSpHWZGvwkO4BjwK3AfuBIkv2rlt0BPF1Vvwv8E/DxWQ8qSVqfIY/wbwKWqupcVT0H3AccWrXmEPBv48tfBd6WJLMbU5K0XjsHrNkNnJ84vgD80aXWVNXzSZ4Bfhv42eSiJEeBo+PDXyb5/lqG3oZ2sWqvGnMvVrgXK9yLFb+31i8cEvyZqarjwHGAJItVNb+Z93+5ci9WuBcr3IsV7sWKJItr/dohT+k8AeydON4zPnfRNUl2Aq8FnlrrUJKk2RsS/NPAviTXJrkCOAwsrFqzAPzl+PJfAN+qqprdmJKk9Zr6lM74Ofk7gZPADuCzVXUmyT3AYlUtAP8KfCHJEvBzRj8Upjm+jrm3G/dihXuxwr1Y4V6sWPNexAfiktSD77SVpCYMviQ1seHB92MZVgzYiw8kOZvk0STfTPLGrZhzM0zbi4l170hSSbbtn+QN2Ysk7xx/b5xJ8sXNnnGzDPg/8oYkDyR5ZPz/5LatmHOjJflskicv9V6ljHxyvE+PJrlx0A1X1Yb9Y/Qi738AvwNcAXwP2L9qzV8BnxpfPgx8eSNn2qp/A/fiT4HfHF9+X+e9GK+7CngQOAXMb/XcW/h9sQ94BPit8fHrtnruLdyL48D7xpf3Az/a6rk3aC/+BLgR+P4lrr8N+AYQ4GbgoSG3u9GP8P1YhhVT96KqHqiqZ8eHpxi952E7GvJ9AfAxRp/L9IvNHG6TDdmL9wLHquppgKp6cpNn3CxD9qKA14wvvxb4ySbOt2mq6kFGf/F4KYeAz9fIKeDqJK+fdrsbHfyLfSzD7kutqarngRc+lmG7GbIXk+5g9BN8O5q6F+NfUfdW1dc3c7AtMOT74jrguiTfSXIqyYFNm25zDdmLjwK3J7kAnADevzmjXXZeak+ATf5oBQ2T5HZgHnjrVs+yFZK8AvgE8O4tHuVysZPR0zq3MPqt78Ekv19V/7WVQ22RI8Dnquofk/wxo/f/vLmq/merB3s52OhH+H4sw4ohe0GStwMfBg5W1S83abbNNm0vrgLeDHw7yY8YPUe5sE1fuB3yfXEBWKiqX1XVD4EfMPoBsN0M2Ys7gPsBquq7wKsYfbBaN4N6stpGB9+PZVgxdS+S3AB8mlHst+vztDBlL6rqmaraVVXXVNU1jF7POFhVa/7QqMvYkP8jX2P06J4kuxg9xXNuE2fcLEP24sfA2wCSvIlR8Jc3dcrLwwLwrvFf69wMPFNVP532RRv6lE5t3McyvOwM3It7gVcDXxm/bv3jqjq4ZUNvkIF70cLAvTgJ/HmSs8B/Ax+qqm33W/DAvfgg8Jkkf8voBdx3b8cHiEm+xOiH/K7x6xUfAV4JUFWfYvT6xW3AEvAs8J5Bt7sN90qSdBG+01aSmjD4ktSEwZekJgy+JDVh8CWpCYMvSU0YfElq4n8BzPZculjwdYoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(kill_per_index, kill_per_class_2)\n",
    "plt.legend()\n",
    "# plt.xticks(kill_per_index,kill_per_index)\n",
    "plt.xlim(1, 6) # x轴范围\n",
    "plt.ylim(0, 50) # y轴范围\n",
    "plt.title('simple-0.92')\n",
    "plt.xlabel('kill_per_index')\n",
    "plt.ylabel('kill_per_class_2')\n",
    "plt.xticks(range(1,7,1), class_name)\n",
    "plt.grid(linestyle='--') # figure中的网格线\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "grad",
   "language": "python",
   "name": "grad"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.15"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
